package com.lovo.test.text;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;

public class Change {
    public static void main(String[] args) {
        System.out.println(camelToSnake("camelToSnake"));//驼峰命名转蛇形命名
        System.out.println(snakeToCamel("camel_to_snake"));//蛇形命名转驼峰命名
        System.out.println(formatCurrency(1234567.89));//将货币数字以千分位的方式表示。
        formatTime();//格式化时间
    }

    //驼峰命名转蛇形命名
    public static String camelToSnake(String camel) {
        String str = "";
        for (int i = 0; i < camel.length(); i++) {//遍历整个字符串
            char ca = camel.charAt(i);//将字符串的每个值赋值到 ca
            if (ca >= 'A' && ca <= 'Z') { //判断ca是不是在大写的范围内
                str += "_" + ca;//是大写就拼接上"_"
            } else {
                str += ca;//不是就正常的拼
            }
        }
        return str.toLowerCase();//将拼接完成后的字符串
    }

    //蛇形命名转驼峰命名
    public static String snakeToCamel(String snake) {
        String str = "";
        String[] strArr = snake.split("_");//以"_"为界限，分割整个字符串
        for (int i = 0; i < strArr.length; i++) {
            char[] a = strArr[i].toCharArray();//将分割后的每个字符串转化成字符数组
            a[0] -= 32;//将字符数组的首位-32转变成大写
            strArr[i] = new String(a);//把转换完成后的字符数组重新转成字符串
            str += strArr[i];//使用字符串拼接的方式将分割后的字符串，重新拼接起来
        }
        return str;
    }

    //将货币数字以千分位的方式表示。
    public static String formatCurrency(double number) {
        Double num = number;//将double转成他的箱类
        String str = "";
        int index = 0;//下标初始值
        String[] strArr = num.toString().split("");
        for (int i = 0; i < strArr.length; i++) {//通过循环的方式，获取到"."的下标
            if (strArr[i].equals(".")) {
                index = i;//将获取到的下标赋值出去
            }
        }
        int count = 0;//计数初始化
        for (int i = index - 2; i >= 0; i--) {//从右边数每隔三个数加上","号
            count++;//每循环一次，计数自增
            if (count % 3 == 0) {//如果计数能被3整除，说明肯定是3的倍数，也就是说i往前移动了三位
                strArr[i] += ",";//每移动三位，拼接上字符串","
            }

        }
        for (String items : strArr) {
            str += items;//将整个字符数组重新拼接成字符串
        }
        return str;//返回拼好的字符串
    }

    //格式化时间
    public static void formatTime() {
        LocalDate date = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu年M月d日");
        String text = date.format(formatter);
        System.out.println(text);

    }
}
